The invention relates generally to communication networks that include computer hardware and software, and more particularly to a server, software run by the server, and a method implemented by the software for routing messages according to the message recipient""s preferences.
Today, a person may have more than one personal message device such as a wireless pager (e.g. a Skytel pager) or an e-mail client (e.g. Microsoft Outlook) that provides access to the person""s e-mail account. Often, these devices communicate to other message devices via a computer network such as a local intranet or the Internet.
FIG. 1 is a block diagram of a conventional computer network 10, which allows communication between message devices. The network 10 includes a sender""s computer 12s, which has an input device 13s (e.g. a keyboard or a mouse) coupled thereto and which includes a processor 14s coupled to a storage device 16s. The network 10 also includes a recipient""s computer 12r, which has an input device 13r and which includes a processor 14r and a storage device 16r. For example, the storage devices 16s and 16r may include a hard drive, volatile electronic memory, or both. The computers 12s and 12r are connected to a communication path 18 by networking circuitry that is omitted for clarity. For example, the path 18 may represent the communication lines that tie into and form the Internet. The processor 14s can run messaging devices such as a desktop pager 20s, a web browser 22s (e.g. Netscape Navigator), and an e-mail client 24s, which allows the sender to send and receive e-mail messages via an e-mail server 26s. Although the processor 14s executes the software that runs these devices, it is common to state that the computer 12s runs these devices. The sender may also have a wireless pager 28s and a voicemail server 30s, which are also connected to the path 18. The voicemail server 30s may allow the sender to send and receive voice messages via the computer 12s or via a telephone system (not shown). Similarly, the recipient""s computer 12r can run a desktop pager 20r, a web browser 22r, and an e-mail client 24r, which allows the recipient to view e-mail received on an e-mail server 26r. Also, the recipient may have a wireless pager 28r and a voicemail server 30r. Although the computers and message devices are labeled as sending or receiving devices for description purposes, it is understood that these labels are arbitrary such that the sending computer and message devices can be used to receive messages and the receiving computer and message devices can be used to send messages.
The system 10 may also include a file server 32, which is connected to the path 18 and which can assist with the transfer of messages between the sender""s messaging devices and the recipient""s messaging devices. For example, the server 32 may be a server of an internet service provider (ISP), which facilitates the transfer of messages between ISP account holders and between an account holder and a non-account holder. Or, the server 32 may be a paging company""s server that transfers messages between the wireless pagers 28s and 28r. 
In operation, the network 10 typically allows two topologies for transferring messages from one device to another: the point-to-point (PTP) topology, and the star topology. With the PTP topology, a message is routed directly between the sending and receiving devices. For example, using a PTP topology, the desktop pager 20s sends a message directly to the desktop pager 20r via the computer 12s, the path 18, and the computer 12r. In some applications, such as where it is an ISP server, the server 32 may open this direct path between the pagers 20s and 20r. Conversely, with a star topology, the message is routed through an intermediate node or device such as the server 32. For example, using a star topology, the pager 28s sends a message intended for the pager 28r to the server 32, which may be the paging company""s server. The server 32 then processes the message and sends it to the pager 28r. This may occur for security or other reasons. Therefore, because the PTP topology eliminates the overhead of having the server receive and send the message, it is often faster and ties up fewer network resources than the star topology.
Unfortunately, if the environment of the network 10 does not allow all messages to be sent with a PTP topology, then the server 32 may be programmed to route all messages with a star topology to prevent messaging failure. This may create an unnecessary bottleneck at the server 32, thus significantly increasing access times and aggravation for users of the server 32. Alternatively, if the same type of server 32 is to be installed in a network 10 having an environment that does allow all messages to be sent with a PTP topology, then the server software will have to be modified to allow this. Thus, if the server 32 can be used in both network environments, then the server manufacturer will have to develop and offer two respective software packages, one for PTP and another for star. Furthermore, the customer will have to install new software if the network environment changes, or if he wishes to install the server 32 in another network 10 having a different environment.
Furthermore, a recipient is often unable to retrieve messages from some of his message devices for extended periods of time, and if a message device is unavailable to receive a message, the message may be lost. For example, suppose the sender sends an e-mail message from his e-mail client 24s to the recipient""s e-mail server 26r. If the recipient is out of town and has no access to the server 26r other than through the e-mail client 24r, then he must wait until he returns before he learns of and can read the sender""s e-mail message. Alternatively, if the sender sends a desktop page from his pager 20s and the recipient""s desktop pager 20r is not running, then the message has nowhere to go and may be lost.
Additionally, a message transfer may be unsuccessful if the sending device is of a different type than the receiving device. For example, if the recipient""s e-mail client 24r is Microsoft Outlook, it may be unable to read an e-mail message from e-mail clients other than those sold by Microsoft.
Moreover, in applications where the server 32 is common to the sending and receiving devices, such as when it is an ISP server, the server 32 may use polling to allow a sender to determine if an intended recipient""s message device is available to receive a message. For example, if the sender wants to send a desktop page, he may first want to determine if the intended recipient""s computer is logged onto the server 32, and thus if the recipient is xe2x80x9conlinexe2x80x9d and able to receive the page. To make this determination, the sender requests, via his computer 12s, the server 32 to poll all of the computers that are logged onto the server 32 and to notify the sender if one of these computer""s is the recipient""s computer 12r. Unfortunately, because the server 32 must communicate with each logged on computer, such polling requires a significant amount of processing time, and thus can significantly increase user access times, particularly during hours of peak use. For example, it is common during peak hours for the number of logged-on computers to exceed one million! Furthermore, if the computer 12r is not logged onto the server 32 at the time that it performs the polling, then the only way for the sender to determine if the computer 12r subsequently logs on is to subsequently request the server 32 to repeat the polling. Thus, this significantly burdens the sender, because he may have to request several polls before he either gives up or the computer 12r logs onto the server 32.
In one aspect of the invention, a server is provided for facilitating communication between a sending device and a receiving device. The server includes a storage device for storing a program, and a processor for executing the program and having first and second states. The processor allows the sending device to send a message past the processor to the receiving device if the processor is in the first state, and the processor receives the message from the sending device and sends the message to the receiving device if the processor is in the second state.
Thus, such a server can automatically select and implement the best network routing topology, star or PTP, on a message-by-message basis. In one embodiment, the server selects and implements the PTP topology unless it cannot be implemented, in which case the server selects and implements the star topology.